package co.com.pd.business.impl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import co.com.pd.business.PrestamoInt;
import co.com.pd.dao.impl.PrestamoDaoImpl;
import co.com.pd.dtos.PrestamoDto;
import co.com.pd.exception.DaoException;

/**
 * 
 * @author Usuario
 *Implementacion de la clase prestamo para los dispositivos
 */
public class PrestamoImpl implements PrestamoInt{
	
	/**
	 * Logica donde se realiza la solicitud de un prestamo por medio del 
	 * seria del sispositivo y del id del usuario que realiza el prestamo
	 */
	@Override
	public void realizarSolicitudPrestamo(String idUsuario, String serialDispositivo)
	{
		PrestamoDto prestamodto = new PrestamoDto();
		PrestamoDaoImpl prestamodaoimpl = new PrestamoDaoImpl();
		
		/**
		 * se crea el formato para la fecha en la que se realiza el prestamo del dispositivo
		 */
		 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		 Date fecha = new Date ();
		 Calendar calendar = Calendar.getInstance();
		 
		 try {
          /**
           * Se obtiene la hora del sistema en el momento que se realiza la solicitud de prestamo
           */
		        String dato =	Integer.toString(calendar.get(Calendar.YEAR)) +"-"+Integer.toString(calendar.get(Calendar.MONTH))+"-"+Integer.toString(calendar.get(Calendar.DATE))
			+" "+Integer.toString(calendar.get(Calendar.HOUR)) +":"+Integer.toString(calendar.get(Calendar.MINUTE))+":"+Integer.toString(calendar.get(Calendar.SECOND))   ;

					fecha = format.parse(dato);
					
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		 
		 /**
		  * se setean los datos para el prestamo dto
		  */
		 prestamodto.setSerialdispositivo(serialDispositivo);
		 prestamodto.setFechaprestamo(fecha);
		 prestamodto.setId_prestamos("dfgdg");
		 prestamodto.setUsuarioquepresto(idUsuario);
		 prestamodto.setEstadoprestamo("Pendienta");
		 
		try{
			/**
			 * se realiza la presistencia del prestamo.
			 */
			prestamodaoimpl.realizarSolicitudPrestamo(prestamodto);
		}
		catch (DaoException e) {
			
			e.printStackTrace();
			
		}
		 
		
		 
		 
		 
		 
		 
		
	}
	
	
	/**
	 * valida la solicitud del prestamo y deacuerdo a esta el admin la rechaza o la aprueba
	 */ 
	@Override
	public void validarSolicitudPrestamo(String estadoPrestamo, String idPrestamo)
	{
		
		PrestamoDto prestamodto = new PrestamoDto();
		PrestamoDaoImpl prestamodaoimpl = new PrestamoDaoImpl();
		
		
		/**
		 * Si el administrador a aprobado la solicitud del prestamo esta obtiene la fecha de la aprobacion 
		 * y obtiene la fecha del fin del prestamos. 
		 */
		if (estadoPrestamo != null)
		if (estadoPrestamo.equals("aprobado"))
		{
			
			 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			 Date fechaInicioPrestamo = new Date ();
			 Date fechaFinprestamo = new Date ();
			 Calendar calendar = Calendar.getInstance();
			 
			 
			 try {

			        String dato =	Integer.toString(calendar.get(Calendar.YEAR)) +"-"+Integer.toString(calendar.get(Calendar.MONTH))+"-"+Integer.toString(calendar.get(Calendar.DATE))
				+" "+Integer.toString(calendar.get(Calendar.HOUR)) +":"+Integer.toString(calendar.get(Calendar.MINUTE))+":"+Integer.toString(calendar.get(Calendar.SECOND))   ;

			        String dato2 =	Integer.toString(calendar.get(Calendar.YEAR)) +"-"+Integer.toString(calendar.get(Calendar.MONTH))+"-"+Integer.toString(calendar.get(Calendar.DATE))
							+" "+Integer.toString(calendar.get(Calendar.HOUR)) +":"+Integer.toString(calendar.get(Calendar.MINUTE))+":"+Integer.toString(calendar.get(Calendar.SECOND))   ;
						
			        fechaInicioPrestamo = format.parse(dato);
			        fechaFinprestamo = format.parse(dato2);
						
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			 
			// prestamodto.setSerialdispositivo("serial");
			 prestamodto.setId_prestamos(idPrestamo);
			 prestamodto.setFechaprestamo(fechaInicioPrestamo);
			 prestamodto.setFechafinprestamo(fechaFinprestamo);
			 prestamodto.setEstadoprestamo(estadoPrestamo);
			 
			try{
				/**
				 * realiza la presistencia para confirmar la solicitud del prestamo.
				 */
				prestamodaoimpl.validarSolicitudPrestamo(prestamodto);
			}
			catch (DaoException e) {
				
				e.printStackTrace();
				
			}
			 
			
		}else
		{
			
			
		}
		
	}


}
